﻿using System.Reflection.Metadata;
using TravelServer.DTOs;
using TravelServer.Helper;
using TravelServer.Models;

namespace TravelServer.Services
{
    public interface ITouristRoutsRepository
    {
        Task<PageNationList<TouristRoute>> GetTouristRouteListAsync(string keyworld,string operater,int? rate,int pageNumber, int pageSize ,string orderBy);
        Task<TouristRoute> GetTouristRouteAsync(Guid touristRouteId);

        Task<bool> HasTouristRouteAsync(Guid touristRouteId);

        Task<IEnumerable<TouristRoutePictures>> GetTouristRoutePicturesByTouristRouteIdAsync(Guid touristRouteId);

        Task<TouristRoutePictures> GetTouristRoutePicturesByPicturesIdAsync(int pictureId);

        void ADDTouristRoute(TouristRoute p);

        void DeleteTouristRoute(TouristRoute p);

        void DeleteTourisRoutes(IEnumerable<TouristRoute> routes);
        Task<IEnumerable<TouristRoute>> GetTourisRoutesAsync(IEnumerable<Guid> ids);
        void ADDTouristRoutePicture(Guid touristRouteId, TouristRoutePictures touristRoutePictures);

        void DeleteTouristRoutePicture(TouristRoutePictures touristRoutePictures);
        Task<bool> SaveDataAsync();

        Task<ShoppingCart> GetShoppingCartByUserIdAsync(string userId);

        Task AddShoppingCartAsync(ShoppingCart cart);

        Task AddShoppingCartItemAsync(LineItem item);

        Task<LineItem> GetShoppingCartItemAsync(int itemId);

        void DeleteShoppingCartItem(LineItem item);

        Task<IEnumerable<LineItem>> GetShoppingCartItemsByIdListAsync(IEnumerable<int> ids);

        void DeleteShoppingCartItems(IEnumerable<LineItem> items);
    
        Task SaveOrderAsync(Order order);

        Task<Order> GetOrderByIdAsync(Guid orderId);

        Task<PageNationList<Order>> GetOrdersByUserIdAsync(string userId,int pagenumber,int pagesize);
    }
}
